<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>加法运算规则</title>
</head>
<body>
<script>
    // A+B

    // 均为原始数据类型
    // 含字符串则转为字符串拼接
    console.log(1+'2')  //12
    console.log('1'+2)  //12
    // 不含字符串转为数字相加-->含NaN结果为NaN
    console.log(1+true)  //2
    console.log(1+false)  //1
    console.log(1+null)  //1
    console.log(1+undefined)  //NaN
    console.log(1+NaN)  //NaN

    // 有一个不为原始数据类型，进行强制类型转换再计算
    // 强制类型转换：
    // 1、先看有没有[Symbol.toPrimitive]函数，有则调用看返回值为原始数据类型则用返回的原始数据类型进行运算
    // 2、没有则调用valueOf()方法看返回值进行运算
    // 3、没有valueOf()方法则调用toString()方法看返回值进行运算
    // 4、toString()方法仍无法返回原始数据类型则报错

</script>
</body>
</html>